﻿using System;
using System.Data;
using System.Data.SqlClient;
using Onshi.POS.AccesoDatos.Interfaces;

namespace Onshi.POS.AccesoDatos
{
    public class ServicioDatosVendedor : ServicioDatosBase, IServicioDatosVendedor
    {
        #region Constructores

        public ServicioDatosVendedor()
            : base()
        {
        }

        #endregion

        #region Metodos

        public void DomiciliosVendedores_ModificarBarrios(Int32 idBarrio, Int32 idBarrioNuevo)
        {
            try
            {
                var cm = new SqlCommand("DomiciliosVendedores_ModificarBarrios", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdBarrio", idBarrio));
                cm.Parameters.Add(new SqlParameter("@IdBarrioNuevo", idBarrioNuevo));
                Conexion.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void Vendedores_Habilitar(Int32 idVendedor)
        {
            try
            {
                var cm = new SqlCommand("Vendedores_Habilitar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdVendedor", idVendedor));
                Conexion.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public DataSet Vendedores_DevolverPorId(Int32 idVendedor)
        {
            try
            {
                var cm = new SqlCommand("Vendedores_DevolverPorId", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdVendedor", idVendedor));
                var da = new SqlDataAdapter(cm);
                var ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public DataSet Vendedores_DevolverPorIdConDetalleDomiciliosTelefonos(Int32 idVendedor)
        {
            try
            {
                var cm = new SqlCommand("Vendedores_DevolverPorIdConDetalleDomiciliosTelefonos", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdVendedor", idVendedor));
                var da = new SqlDataAdapter(cm);
                var ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public DataSet Vendedores_DevolverPorCodigo(String codigo)
        {
            try
            {
                var cm = new SqlCommand("Vendedores_DevolverPorCodigo", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@Codigo", codigo));
                var da = new SqlDataAdapter(cm);
                var ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public DataSet Vendedores_DevolverPorCodigoConDetalleDomiciliosTelefonos(String codigo)
        {
            try
            {
                var cm = new SqlCommand("Vendedores_DevolverPorCodigoConDetalleDomiciliosTelefonos", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@Codigo", codigo));
                var da = new SqlDataAdapter(cm);
                var ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public DataSet Vendedores_DevolverTodos()
        {
            try
            {
                var cm = new SqlCommand("Vendedores_DevolverTodos", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                var da = new SqlDataAdapter(cm);
                var ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public DataSet Vendedores_DevolverTodosConDetalleDomiciliosTelefonos()
        {
            try
            {
                var cm = new SqlCommand("Vendedores_DevolverTodosConDetalleDomiciliosTelefonos", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                var da = new SqlDataAdapter(cm);
                var ds = new DataSet();
                da.Fill(ds);
                return ds;
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public Int32 Vendedores_Insertar(Int32 idRubroVendedor, Byte idTipoComisionVendedor, Byte idTipoMensajeriaInstantanea, String codigo, String nombre, String cuit, Decimal comision, Decimal comisionMaxima, String email, String sitioWeb, String mensajeriaInstantanea)
        {
            try
            {
                var cm = new SqlCommand("Vendedores_Insertar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdRubroVendedor", idRubroVendedor));
                cm.Parameters.Add(new SqlParameter("@IdTipoComisionVendedor", idTipoComisionVendedor));
                cm.Parameters.Add(new SqlParameter("@IdTipoMensajeriaInstantanea", idTipoMensajeriaInstantanea));
                cm.Parameters.Add(new SqlParameter("@Codigo", codigo));
                cm.Parameters.Add(new SqlParameter("@Nombre", nombre));
                cm.Parameters.Add(new SqlParameter("@Cuit", cuit));
                cm.Parameters.Add(new SqlParameter("@Comision", comision));
                cm.Parameters.Add(new SqlParameter("@ComisionMaxima", comisionMaxima));
                cm.Parameters.Add(new SqlParameter("@Email", email));
                cm.Parameters.Add(new SqlParameter("@SitioWeb", sitioWeb));
                cm.Parameters.Add(new SqlParameter("@MensajeriaInstantanea", mensajeriaInstantanea));
                Conexion.Open();
                return Convert.ToInt32(cm.ExecuteScalar());
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }//

        public void Vendedores_Modificar(Int32 idVendedor, Int32 idRubroVendedor, Byte idTipoComisionVendedor, Byte idTipoMensajeriaInstantanea, String codigo, String nombre, String cuit, Decimal comision, Decimal comisionMaxima, String email, String sitioWeb, String mensajeriaInstantanea)
        {
            try
            {
                var cm = new SqlCommand("Vendedores_Modificar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdVendedor", idVendedor));
                cm.Parameters.Add(new SqlParameter("@IdRubroVendedor", idRubroVendedor));
                cm.Parameters.Add(new SqlParameter("@IdTipoComisionVendedor", idTipoComisionVendedor));
                cm.Parameters.Add(new SqlParameter("@IdTipoMensajeriaInstantanea", idTipoMensajeriaInstantanea));
                cm.Parameters.Add(new SqlParameter("@Codigo", codigo));
                cm.Parameters.Add(new SqlParameter("@Nombre", nombre));
                cm.Parameters.Add(new SqlParameter("@Cuit", cuit));
                cm.Parameters.Add(new SqlParameter("@Comision", comision));
                cm.Parameters.Add(new SqlParameter("@ComisionMaxima", comisionMaxima));
                cm.Parameters.Add(new SqlParameter("@Email", email));
                cm.Parameters.Add(new SqlParameter("@SitioWeb", sitioWeb));
                cm.Parameters.Add(new SqlParameter("@MensajeriaInstantanea", mensajeriaInstantanea));
                Conexion.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void Vendedores_Eliminar(Int32 idVendedor)
        {
            try
            {
                var cm = new SqlCommand("Vendedores_Eliminar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdVendedor", idVendedor));
                Conexion.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void VendedoresDetalles_Insertar(Int32 idVendedor, String observacion, Byte[] imagen)
        {
            try
            {
                var cm = new SqlCommand("VendedoresDetalles_Insertar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdVendedor", idVendedor));
                cm.Parameters.Add(new SqlParameter("@Observacion", observacion));
                cm.Parameters.Add(new SqlParameter("@Imagen", imagen));
                Conexion.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void VendedoresDetalles_Modificar(Int32 idVendedor, String observacion, Byte[] imagen)
        {
            try
            {
                var cm = new SqlCommand("VendedoresDetalles_Modificar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdVendedor", idVendedor));
                cm.Parameters.Add(new SqlParameter("@Observacion", observacion));
                cm.Parameters.Add(new SqlParameter("@Imagen", imagen));
                Conexion.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void DomiciliosVendedores_EliminarPorVendedor(Int32 idVendedor)
        {
            try
            {
                var cm = new SqlCommand("DomiciliosVendedores_EliminarPorVendedor", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdVendedor", idVendedor));
                Conexion.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public Int32 DomiciliosVendedores_Insertar(Int32 idVendedor, Byte idTipoDomicilio, Int32 idBarrio, String calle, String numero, String piso, String departamento, String observacion)
        {
            try
            {
                var cm = new SqlCommand("DomiciliosVendedores_Insertar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdVendedor", idVendedor));
                cm.Parameters.Add(new SqlParameter("@IdTipoDomicilio", idTipoDomicilio));
                cm.Parameters.Add(new SqlParameter("@IdBarrio", idBarrio));
                cm.Parameters.Add(new SqlParameter("@Calle", calle));
                cm.Parameters.Add(new SqlParameter("@Numero", numero));
                cm.Parameters.Add(new SqlParameter("@Piso", piso));
                cm.Parameters.Add(new SqlParameter("@Departamento", departamento));
                cm.Parameters.Add(new SqlParameter("@Observacion", observacion));
                Conexion.Open();
                return Convert.ToInt32(cm.ExecuteScalar());
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void TelefonosVendedores_EliminarPorVendedor(Int32 idVendedor)
        {
            try
            {
                var cm = new SqlCommand("TelefonosVendedores_EliminarPorVendedor", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdVendedor", idVendedor));
                Conexion.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public Int32 TelefonosVendedores_Insertar(Int32 idVendedor, Byte idTipoTelefono, String codigoArea, String numero, String observacion)
        {
            try
            {
                var cm = new SqlCommand("TelefonosVendedores_Insertar", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdVendedor", idVendedor));
                cm.Parameters.Add(new SqlParameter("@IdTipoTelefono", idTipoTelefono));
                cm.Parameters.Add(new SqlParameter("@CodigoArea", codigoArea));
                cm.Parameters.Add(new SqlParameter("@Numero", numero));
                cm.Parameters.Add(new SqlParameter("@Observacion", observacion));
                Conexion.Open();
                return Convert.ToInt32(cm.ExecuteScalar());
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        public void Vendedores_ModificarRubrosVendedores(Int32 idRubroVendedor, Int32 idRubroVendedorNuevo)
        {
            try
            {
                var cm = new SqlCommand("Vendedores_ModificarRubrosVendedores", Conexion);
                cm.CommandType = CommandType.StoredProcedure;
                cm.Parameters.Add(new SqlParameter("@IdRubroVendedor", idRubroVendedor));
                cm.Parameters.Add(new SqlParameter("@IdRubroVendedorNuevo", idRubroVendedorNuevo));
                Conexion.Open();
                cm.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (Conexion.State == ConnectionState.Open)
                    Conexion.Close();
            }
        }

        #endregion
    }
}